home *** CD-ROM | disk | FTP | other *** search
-
-
-
- mmmmaaaasssstttteeeerrrr((((4444)))) mmmmaaaasssstttteeeerrrr((((4444))))
-
-
-
- NNNNAAAAMMMMEEEE
- master - master configuration database
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The _m_a_s_t_e_r configuration database is a collection of files. Each file
- contains configuration information for a device or module that can be
- included in the system. A file is named with the module name to which it
- applies. This collection of files is maintained in a directory called
- /_v_a_r/_s_y_s_g_e_n/_m_a_s_t_e_r._d. Each individual file has an identical format. For
- convenience, this collection of files is referred to as the _m_a_s_t_e_r file,
- as though it was a single file. This allows a reference to the _m_a_s_t_e_r
- file to be understood to mean the _i_n_d_i_v_i_d_u_a_l _f_i_l_e in the _m_a_s_t_e_r._d
- directory that corresponds to the name of a device or module.
-
- The _m_a_s_t_e_r file is used by the _l_b_o_o_t(1M) program to obtain device
- information to generate the device driver and configurable module files.
- _m_a_s_t_e_r consists of two parts; they are separated by a line with a dollar
- sign ($) in column 1. Part 1 contains device information for both
- hardware and software devices and loadable modules. Part 2 contains
- parameter declarations. Any line with an asterisk (*) in column 1 is
- treated as a comment.
-
- PPPPaaaarrrrtttt 1111,,,, DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
- Hardware devices, software drivers, and loadable modules are defined with
- a line containing the following information. Field 1 must begin in the
- leftmost position on the line. Fields are separated by white space (tab
- or blank).
-
- Field 1: Element characteristics:
- oooo specify only once
- rrrr required device
- bbbb block device
- cccc character device
- tttt initialize cdevsw[].d_ttys
- jjjj filesystem
- ssss software driver
- ffff STREAMS driver
- mmmm STREAMS module
- xxxx not a driver; a loadable module
- kkkk kernel module
- uuuu a stubs module that is loaded after all other normal
- modules
- nnnn driver is fully semaphored for multi-processor operation;
- the nnnn and pppp directives are ignored on single-processor
- systems
- pppp driver is not semaphored and should run on only one
- processor
- wwww driver is prepared to perform any cache write back
- operation required on write data passed via the strategy
- routine
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- mmmmaaaasssstttteeeerrrr((((4444)))) mmmmaaaasssstttteeeerrrr((((4444))))
-
-
-
- dddd dynamically loadable kernel module
- RRRR auto-registrable dynamically loadable kernel module
- NNNN don't allow auto-unload of dynamically loadable kernel
- module
- DDDD load, then unload a dynamically loadable kernel module
- eeee ethernet driver
-
- Field 2: Handler prefix (14 characters maximum).
-
- Field 3: Software driver external major number; a dash (-) if not a
- software driver or to be assigned during execution of
- _l_b_o_o_t(1M). Multiple major numbers can be specified, separated
- by commas.
-
- Field 4: Number of sub-devices per device; a dash (-) if none.
-
- Field 5: Dependency list (optional); this is a comma-separated list of
- other drivers or modules that must be present in the
- configuration if this module is to be included
-
- For each module, two classes of information are required by _l_b_o_o_t(1M):
- external routine references and variable definitions. Routine lines
- begin with white space and immediately follow the initial module
- specification line. These lines are free form, thus they can be
- continued arbitrarily between non-blank tokens as long as the first
- character of a line is white space. Variable definition lines begin
- after a line that contains a $ in column one. Variable definitions
- follow C language conventions, with slight modifications.
-
- PPPPaaaarrrrtttt 1111,,,, RRRRoooouuuuttttiiiinnnneeee RRRReeeeffffeeeerrrreeeennnncccceeee LLLLiiiinnnneeeessss
- If the IRIX system kernel or other dependent module contains external
- references to a module, but the module is not configured, these external
- references are undefined. Therefore, the routine reference lines are
- used to provide the information necessary to generate appropriate dummy
- functions at boot time when the driver is not loaded.
-
- Routine references are defined as follows:
-
- Field 1: Routine name ()
-
- Field 2: The routine type; one of
- {{{{}}}} routine_name(){}
- {{{{nnnnuuuullllllllddddeeeevvvv}}}} routine_name(){nulldev();}
- {{{{nnnnoooossssyyyyssss}}}} routine_name(){return nosys();}
- {{{{nnnnooooddddeeeevvvv}}}} routine_name(){return nodev();}
- {{{{ffffaaaallllsssseeee}}}} routine_name(){return 0;}
- {{{{ttttrrrruuuueeee}}}} routine_name(){return 1;}
- {{{{ffffssssnnnnuuuullllllll}}}} routine_name(){return fsnull();}
- {{{{ffffssssssssttttrrrraaaayyyy}}}} routine_name(){return fsstray();}
- {{{{nnnnooooppppkkkkgggg}}}} routine_name(){nopkg();}
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- mmmmaaaasssstttteeeerrrr((((4444)))) mmmmaaaasssstttteeeerrrr((((4444))))
-
-
-
- {{{{nnnnoooorrrreeeeaaaacccchhhh}}}} routine_name(){noreach();}
-
- PPPPaaaarrrrtttt 2222,,,, VVVVaaaarrrriiiiaaaabbbblllleeeessss
- Variables can be declared and (optionally) statically initialized on
- lines after a line whose first character is a dollar sign ($). Variable
- definitions follow standard C syntax for global declarations, with the
- following inline substitutions:
-
- ##M The internal major number assigned to the current module if it is a
- device driver; zero if this module is not a device driver.
-
- ##E The external major number assigned to the current module; either
- explicitly defined by the current master file entry, or assigned by
- _l_b_o_o_t(1M).
-
- ##C The number of controllers present; this number is determined
- dynamically by lboot(1M) for hardware devices, or by the number
- provided in the system file for non-hardware drivers or modules.
-
- ##D The number of devices per controller taken directly from the
- current master file entry.
-
- EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
- A sample _m_a_s_t_e_r file for a shared memory module is named _s_h_m. The module
- is an optional loadable software module that can only be specified once.
- The module prefix is _s_h_m, and it has no major number associated with it.
- In addition, another module named _i_p_c is necessary for the correct
- operation of this module.
-
- *FLAG PREFIX SOFT #DEV DEPENDENCIES
- ox shm - - ipc
- shmsys(){nosys}
- shmexec(){}
- shmexit(){}
- shmfork(){}
- shmslp(){true}
- shmtext(){}
- $
- #define SHMMAX 131072
- #define SHMMIN 1
- #define SHMMNI 100
- #define SHMSEG 6
- #define SHMALL 512
-
- struct shmid_ds shmem[SHMMNI];
- struct shminfo shminfo = {
- SHMMAX,
- SHMMIN,
- SHMMNI,
- SHMSEG,
- SHMALL,
- };
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- mmmmaaaasssstttteeeerrrr((((4444)))) mmmmaaaasssstttteeeerrrr((((4444))))
-
-
-
- This _m_a_s_t_e_r file causes routines named _s_h_m_s_y_s, _s_h_m_e_x_e_c, and so on to be
- generated by the boot program if the _s_h_m driver is not loaded and there
- is a reference to this routine from any other module loaded. When the
- driver is loaded, the structure array _s_h_m_e_m is allocated, and the
- structure _s_h_m_i_n_f_o is allocated and initialized as specified.
-
- A sample _m_a_s_t_e_r file for a VME disk driver is named _d_k_i_p. The driver is
- a block and a character device, the driver prefix is _d_k_i_p, and the
- external major number is 4. The VME interrupt priority level and vector
- numbers are declared in the system file /_v_a_r/_s_y_s_g_e_n/_s_y_s_t_e_m (see
- _l_b_o_o_t(1M)).
-
- *FLAG PREFIX SOFT #DEV DEPENDENCIES
- bc dkip 4 - io
-
- $$$
- /* disk driver variable tables */
- #include "sys/dvh.h"
- #include "sys/dkipreg.h"
- #include "sys/elog.h"
-
- struct iotime dkipiotime[##C][DKIPUPC]; /* io statistics */
- struct iobuf dkipctab[##C]; /* controller queues */
- struct iobuf dkiputab[##C][DKIPUPC]; /* drive queues */
- int dkipmajor = ##E; /* external major # */
-
- This _m_a_s_t_e_r file causes entries in the block and character device switch
- tables to be generated if this module is loaded. Since this is a
- hardware device (implied by the block and character flags), VME interrupt
- structures are also generated by the boot program. The declared arrays
- are all sized to the number of controllers present, which is determined
- by the boot program based on information in the system file
- /_v_a_r/_s_y_s_g_e_n/_s_y_s_t_e_m.
-
- FFFFIIIILLLLEEEESSSS
- /var/sysgen/master.d/*
- /var/sysgen/system
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- lboot(1M), mload(4), system(4).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-